还原缺少的 Windows Installer 缓存文件 您所在的位置:网站首页 installation details 还原缺少的 Windows Installer 缓存文件

还原缺少的 Windows Installer 缓存文件

#还原缺少的 Windows Installer 缓存文件| 来源: 网络整理| 查看: 265

还原缺少的 Windows Installer 缓存文件并解决SQL Server更新期间出现的问题 项目 03/02/2023

本文介绍安装SQL Server更新时出现的缺少 MSI 错误的几种解决方案。

原始产品版本:SQL Server 原始 KB 编号: 969052

注意

本文中所述的过程仅提供紧急救济,而不是永久修复。 使用此紧急过程的客户应按照缺少 Windows Installer 缓存 需要重新生成计算机一文中的指示,使用 Windows Installer 缓存验证程序包来验证其 Windows Installer 缓存。

症状

安装 Microsoft SQL Server Service Pack 或累积更新时,可能会遇到各种错误消息,指示 Windows Installer 缓存问题。 Windows Installer 缓存位于 c:\windows\installer 文件夹中,存储通过 Windows Installer 技术安装的应用程序的关键文件。 如果安装程序缓存因删除文件而遭到入侵,则在卸载、修复或更新SQL Server之前,可能不会立即遇到问题。

由于SQL Server使用 Windows Installer 技术,因此它可能会受到此处所述的问题的影响。 SQL Server 安装包 (.MSI 和 。MSP 文件) 将存储在 Windows 安装程序缓存中。 卸载和更新应用程序需要这些文件。 缺少的文件不能在计算机之间复制,因为它们是唯一的。

原因

当 Windows Installer 缓存中缺少 Windows Installer 数据库文件 (.msi) 或 Windows Installer 修补程序文件 (.msp) 时,可能会出现这些问题。 Windows Installer 缓存位于文件夹中: %windir%\installer。

使用 Windows Installer 安装产品时,原始.msi文件的剥离版本存储在 Windows Installer 缓存中。 每次更新产品(例如修补程序、累积更新或 Service Pack 设置)也会将相关的 .msp 或 .msi 文件存储在 Windows Installer 缓存中。

产品的任何未来更新(例如修补程序、累积更新或 Service Pack 安装程序)都依赖于存储在 Windows Installer 缓存中的文件中的信息。 如果没有此信息,新更新将无法执行所需的转换。

警告

当应用程序安装和更新包时,Windows 会自动管理安装程序缓存目录 (%windir%\installer) 。 此目录中的用户手动干预可能会导致各种问题,包括本文中所述的问题。

解决方案 1:修复SQL Server安装

对于SQL Server安装,请先使用以下文章中所述的修复过程来验证当前安装:

如何:修复失败SQL Server安装

对于以前的版本:

如何:修复失败SQL Server 2008 安装 如何:修复失败SQL Server 2008 R2 安装 如何:修复失败SQL Server 2012 安装

应使用以下命令行从原始安装媒体运行修复:

setup.exe /ACTION=REPAIR /INDICATEPROGRESS=TRUE

首先修复常见的共享组件和功能,然后重复 命令以修复安装的实例。 在此过程中,设置对话框将消失。 只要进度窗口不显示错误,该过程就按预期进行。 如果缺少特定组件的安装程序缓存文件,修复过程将遇到错误。

解决方案 2:使用 FixMissingMSI 工具

可以使用 FixMissingMSI 工具识别 Windows Installer 缓存中缺少的 MSI 和 MSP 文件。 作为额外的分辨率,可以将该工具指向原始媒体位置,并重新缓存缺少的文件。

下载

可以从 GitHub 存储库下载 FixMissingMSI 工具。

如何使用

这是一个图形用户界面 (GUI) 工具,可用于轻松识别和修复缺少的 MSI。

有关详细信息,请参阅 SQL Setup ToolSuite Introduction (1) -FixMissingMSI。

解决方案 3:使用FindSQLInstalls.vbs脚本

若要完成此过程中的步骤,必须将 FixMissingMSI 文件夹中的 FindSQLInstalls.vbs 脚本从 GitHub 存储库复制到尝试更新SQL Server安装的计算机上的本地文件夹。

注意

FindSQLInstalls.vbs脚本收集包信息以更正无效的包路径。 此脚本针对源位置使用,以确保所有 MSP 包都位于 Windows Installer 缓存目录中。 在脚本输出文件中执行操作所需行中指示的命令后,如果原始源媒体可用,将重新添加缺少的包。

若要使用脚本解决这些问题,请执行以下步骤:

转到 GitHub 上的FindSQLInstalls.vbs原始页面。

将页面上的所有内容复制到新的文本文件。

将文本文件另存为 FindSQLInstalls.vbs。

打开将 FindSQLInstalls.vbs 文件保存到的目录的提升的命令提示符,然后运行 命令:

Cscript FindSQLInstalls.vbs %computername%_sql_install_details.txt`.

在记事本等文本编辑器中打开步骤 2 中的文件,并确定导致失败的问题。 为此,请在文本文件中搜索字符串模式,如下所示:

do not !!!

根据上一步的结果,执行所需的步骤。

注意

在 示例 部分查找有关这些步骤的详细信息。

重复步骤 2 到步骤 4,直到步骤 2 中创建的文本文件不再包含引用正在更新的组件无效路径或缺少文件的文本。

FindSQLInstalls.vbs示例

以下示例是运行 FindSQLInstalls.vbs 脚本时生成的输出文件中概述的操作的条目和说明。

示例 1:缺少安装程序文件

下面是在 Windows Installer 缓存文件夹中缺少.msi包时生成的输出示例。

================================================================================ PRODUCT NAME : Microsoft SQL Server 2008 Database Engine Services ================================================================================ Product Code: {9FFAE13C-6160-4DD0-A67A-DAC5994F81BD} Version : 10.2.4000.0 Most Current Install Date: 20110211 Target Install Location: Registry Path: HKEY_CLASSES_ROOT\Installer\Products\C31EAFF906160DD46AA7AD5C99F418DB\SourceList Package : sql_engine_core_inst.msi Install Source: \x64\setup\sql_engine_core_inst_msi\ LastUsedSource: m;1;G:\x64\setup\sql_engine_core_inst_msi\

LastUsedSource 行指向用于运行安装程序的位置。

在 LastUsedSource 行中, m; 条目表示媒体,并指示原始源是 CD/DVD 媒体。

在以下示例中,源是驱动器 G 中的 CD 或 DVD。如果从文件夹或网络共享进行安装,则 LastUsedSource 行以 n; 条目开头,后跟 Numeric_Data_Name; 条目,然后是实际路径:

!!!! sql_engine_core_inst.msi DOES NOT exist on the path in the path G:\x64\setup\sql_engine_core_inst_msi\ !!!! Action needed, re-establish the path to G:\x64\setup\sql_engine_core_inst_msi\

“需要操作”行显示必须存在的完整路径才能更新原始安装媒体的缺失文件:

安装程序缓存文件: C:\WINDOWS\Installer\19b4d2.msi

安装程序缓存文件行确认安装程序缓存文件的名称:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! C:\WINDOWS\Installer\19b4d2.msi DOES NOT exist in the Installer cache. !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

输出的以下部分会建议解决缺少的文件所需的操作:

需要执行操作,重新创建或重新建立目录的路径:G:\x64\setup\sql_engine_core_inst_msi\然后重新运行此脚本以更新安装程序缓存,结果 上行的路径必须存在于根位置,才能解决此问题,因为 msi/msp 文件未找到或已损坏,在某些情况下,可能需要手动复制缺少的文件或手动替换覆盖它存在的问题文件: 复制“G:\x64\setup\sql_engine_core_inst_msi\sql_engine_core_inst.msi”C:\WINDOWS\Installer\19b4d2.msi替换现有文件(如果系统提示这样做)。

示例 2:缺少修补程序

缺少修补程序可能会导致条目类似于示例 1 中的条目。 大多数情况下,你会注意到 Patch LastUsedSource 行中引用修补程序的条目,此行类似于: Patch LastUsedSource: n;1;c:\0ca91e857a4f12dd390f0821a3\HotFixSQL\Files\。

此输出指示有关修补程序安装的以下内容:

原始修补程序是通过双击修补程序的可执行文件安装的。 修补程序的安装程序在安装修补程序期间使用了临时文件夹 c:\0ca91e857a4f12dd390f0821a3。 若要重新创建路径,必须运行相同的可执行文件并添加 参数: /x:c:\0ca91e857a4f12dd390f0821a3。

注意

此命令强制可执行文件将文件提取到以前缺失的位置,并重新创建使用任何缺失文件更新 Windows 安装程序缓存所需的结构。 实际位置会有所不同,可能需要将单个修补程序(如 Service Pack)提取到多个位置。 每个已安装的产品都包含一个部分,其中包含已安装修补程序的以下信息:

显示名称: 知识库文章 URL: http://support.microsoft.com/?kbid= Patch LastUsedSource:

KB 文章 URL 行可帮助你下载任何修补程序介质(如有必要)。

解决方案 4:手动还原文件

若要手动还原 Windows Installer 缓存中缺少的文件,请执行以下步骤:

从错误消息、安装程序日志文件或 Windows Installer 维护的注册表项中收集有关缺少文件的完整详细信息。 例如,在“ 症状 ”部分的“错误消息 1”中,错误消息中提供了解决问题所需的所有信息:

PatchName:“修补程序 1702 for SQL Server 2008 R2 (KB981355) (64 位) ” 修补程序使用的原始 MSP 文件:sql_engine_core_inst.msp 缓存的 MSP 文件: c:\Windows\Installer\1fdb1aec.msp

如果没有所有详细信息,请参阅收集这些详细信息的第一步。

访问 查询,并搜索与此修补程序关联的知识库文章。 在此示例中,必须搜索 KB981355。

将此修补程序包下载到计算机。 请确保下载与所需平台对应的修补程序包。 在此示例中,包SQLServer2008R2-KB981355-x64.exe。

使用以下语法提取修补程序包的内容:

C:\Temp>SQLServer2008R2-KB981355-x64.exe /x C:\Temp\SQLServer2008R2-KB981355-x64\

找到原始 msp 文件 sql_engine_core_inst.msp 文件。 该文件应位于以下文件夹中:*C:\Temp\SQLServer2008R2-KB981355-x64\x64\setup\sql_engine_core_inst_msi*。

将原始 msp 文件复制到以下 Windows Installer 缓存:*%windir%\installer*。

将原始 msp 文件 sql_engine_core_inst.msp 重命名为名称:cached msp 文件 1fdb1aec.msp。

可以启动导致错误的更新的安装程序,并恢复更新过程。 对于另一个组件或同一产品的另一个更新缺少 Windows Installer 缓存文件,你可能会遇到此消息。

若要获取与SQL Server产品组件相关的所有缺失 Windows Installer 缓存文件的列表,可以下载更多信息部分中提到的 SQL Server 2008 R2 BPA 工具。

如果错误消息引用了缺少的 Windows Installer 数据库文件 (.msi) ,则无需执行步骤 2 到步骤 4。 相反,你可以直接转到步骤 5。 必须从用于安装产品的原始介质中找到.msi。 如果为 sql_engine_core_inst.msi 生成了此错误消息,则必须从文件夹结构下的安装介质中找到此文件: \x64\setup\sql_engine_core_inst_msi\。 其他步骤相同。

查找缺少的 .msp 文件的修补程序包和产品详细信息

产品的不同版本为所述问题生成不同的错误消息。 从 SQL Server 2008 SP1 开始的更新会显示“症状”部分中提到的错误消息。 对于其他更新,你会收到错误消息,这些错误消息可能未明确指定 Windows Installer 缓存中缺少哪个修补程序文件和特定更新详细信息。 对于这些错误消息,安装日志文件将包含有关缺少的 Windows Installer 缓存文件的信息。 示例安装日志如下所示:

MSI (s) (FC:F8) [13:48:58:649]: Opening existing patch 'C:\WINDOWS\Installer\145258.msp'. MSI (s) (FC:F8) [13:48:58:649]: Couldn't find local patch 'C:\WINDOWS\Installer\145258.msp'. Looking for it at its source. MSI (s) (FC:F8) [13:48:58:649]: Resolving Patch source. MSI (s) (FC:F8) [13:48:58:649]: Note: 1: 2203 2: D:\cda162709d239766830bae5ce12b\HotFixSQL\Files\sqlrun_sql.msp 3: -2147287037 MSI (s) (FC:F8) [13:48:58:649]: SOURCEMGMT: Source is invalid due to missing/inaccessible package. MSI (s) (FC:F8) [13:49:29:961]: Product: Microsoft SQL Server 2005 -- Installation failed. MSI (s) (FC:F8) [13:49:29:992]: MainEngineThread is returning 1635 This patch package could not be opened. Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package. D:\SQL2K5\Servers\Setup\SqlRun_SQL.msi

如果仔细检查此安装日志,它已提供有关修补程序使用的原始 MSP 文件的信息: sqlrun_sql.msp。

若要查找有关 Windows Installer 缓存中缺少 .msp 文件的更多详细信息,请执行以下步骤:

在以下 Windows Installer 修补程序注册表子项中搜索缺少的 .msp 文件: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\

找到 修补程序 GUID。

在以下 Windows Installer 产品注册表子项中搜索修补程序 GUID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\

对于示例安装日志,缺少的 .msp 文件及其相应的修补程序详细信息显示在以下注册表项中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\A3B085EA74A9A7640A496636F7EF9A44 Value: 0 Name: LocalPackage Data: `C:\WINDOWS\Installer\145258.msp HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\1EB3A031CC585314E87AA527E46EECC2\Patches\A3B085EA74A9A7640A496636F7EF9A44 Value: 6 Name: DisplayName Data: GDR 2050 for SQL Server Database Services 2005 ENU (KB932555)

现在,你已获得所有信息点,以启动解决 Windows Installer 缓存中缺少的文件的步骤。

注意

如果使用 SQL Server 2008 Service Pack 3 (SP3) 或更高版本,则还会收到有关缺少.msi文件的类似错误消息。 使用此错误消息,可以快速确定缺少哪个文件、要下载的 Service Pack 以及可在何处找到下载内容。

有关如何获取 Service Pack 的详细信息,请参阅 KB2546951 - SQL Server 2008 Service Pack 3 修复的问题列表。

解决方案 5:从系统状态备份还原

可以从系统状态备份还原,如 缺少 Windows Installer 缓存需要重新生成计算机中所述。

更多信息

注意

以下错误消息可以作为文本消息在事件日志或安装程序日志中找到,这些消息位于以下文件夹中,它们指示应进一步修复受影响的实例:

对于 SQL Server 2008 和 SQL Server 2008 R2:C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap 对于 2012 SQL Server:C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap

对于 SQL 2005, (所有分支)

产品版本 缺少安装程序包 (MSI) 时的错误消息 缺少安装程序缓存包 (MSP) 时出现错误消息 SQL Server 2005 1636 无法安装 Windows Installer MSI 文件 1636 无法安装 Windows Installer MSP 文件

注意

必须查看安装日志文件,以确定是否缺少任何缓存文件。 有关如何执行此操作的详细信息,请转到 “解决方法 ”部分。

对于 SQL Server 2008 SP1

产品版本 缺少安装程序包 (MSI) 时的错误消息 缺少安装程序缓存包 (MSP) 时出现错误消息 SQL Server 2008 SP1 无错误消息 标题:SQL Server安装程序失败。------------------------------SQL Server安装程序遇到错误:无法打开修补程序文件。文件为:c:\WINNT\Installer\FileName.msp。错误代码0x84B20001。------------------------------

对于 SQL Server 2008 SP3 仅生成 (CU/GDR 分支不适用)

产品版本 缺少安装程序包 (MSI) 时的错误消息 缺少安装程序缓存包 (MSP) 时出现错误消息 SQL Server 2008 SP3 缺少缓存的 MSI 文件 C:\Windows\Installer\FileName.msi 。 其原始文件是 sql_engine_core_inst.msi ,它已安装用于 2008 数据库引擎服务NetworkPath产品SQL Server版本 、语言 VersionNumberENU。 缺少缓存的修补程序文件 C:\Windows\Installer\FileName.msp 。 此缓存文件的原始文件是 sql_engine_core_inst.msp,可从 Service Pack 3 for SQL Server 2008 安装, (KB2546951) (64 位) 版本VersionNumber

注意

执行升级时收到以下错误消息:

对于 SQL Server 2008 R2 SP1,仅 CU/GDR 分支 (不适用)

产品版本 缺少安装程序包 (MSI) 时的错误消息 缺少安装程序缓存包 (MSP) 时出现错误消息 SQL Server 2008 R2 SP1 标题:SQL Server安装程序失败。------------------------------SQL Server安装程序遇到以下错误: C:\Windows\Installer\FileName.msi。------------------------------ 缺少缓存的修补程序文件 C:\Windows\Installer\FileName.msp 。 此缓存文件的原始文件是 sql_engine_core_inst_loc.msp,可从 Service Pack 1 for SQL Server 2008 R2 (KB2528583) (64 位) 版本 VersionNumber安装。

注意

执行升级时收到以下错误消息:

对于 SQL Server 2008 R2 SP2

产品版本 缺少安装程序包 (MSI) 时的错误消息 缺少安装程序缓存包 (MSP) 时出现错误消息 SQL Server 2008 R2 SP1 缺少缓存的 MSI 文件 C:\Windows\Installer\FileName.msi 。 其原始文件是sql_engine_core_inst.msi,它是为 2008 R2 SP1 数据库引擎服务NetworkPath产品SQL Server从 、版本 VersionNumber、语言 LanguageName安装。 缺少缓存的修补程序文件 C:\Windows\Installer\FileName.msp 。 此缓存文件的原始文件是 sql_engine_core_inst_loc.msp,可从 Service Pack 1 for SQL Server 2008 R2 (KB2528583) (64 位) 版本 VersionNumber安装。

注意

执行升级时收到以下错误消息:

对于 CU2 之前的 SQL Server 2012

不存在缺少 MSP 或 MSI 文件的消息。 但是,安装程序日志中记录了错误代码 1714。

在Summary.txt文件中:组件名称:SQL Server安装程序支持文件组件错误代码:1714

在 Detail.txt 文件中:

Date/Time Slp: Sco: FileFilePath does not exist Date/Time Slp: Sco: FileFilePathdoes not exist Date/Time Slp: Checkpoint: PREINSTALL_SQLSUPPORT_CPU64_ACTION Date/Time Slp: Sco: Attempting to create base registry key HKEY_LOCAL_MACHINE, machineServer Name Date/Time Slp: Sco: Attempting to open registry subkey Software\Microsoft\Windows\CurrentVersion\Installer Date/Time Slp: Sco: Attempting to get registry value InstallerLocation Date/Time Slp: Windows installer version : 5.0.7601.17514 Date/Time Slp: Sco: Waiting for service 'msiserver' to accept the stop request. Date/Time Slp: Sco: Attempting to open SC Manager Date/Time Slp: Sco: Attempting to open service handle for service msiserver Date/Time Slp: Invoking QueryServiceStatus Win32 API Date/Time Slp: Sco: Attempting to close service handle for service msiserver Date/Time Slp: Sco: Attempting to close SC Manager Date/TimeSlp: Target package: "FilePath" Date/TimeSlp: MSI Error: 1714 The older version of Microsoft SQL Server 2012 Setup (English) cannot be removed. Contact your technical support group. Date/TimeSlp: InstallPackage: MsiInstallProduct returned the result code 1603. Date/TimeSlp: Using MSI error code to detect the retry option: 1714 Date/TimeSlp: No retry-able MSI return code detected.

对于 SQL Server 2012 CU2 (以及任何后续 CU 或 SP)

产品版本 缺少安装程序包 (MSI) 时的错误消息 缺少安装程序缓存包 (MSP) 时出现错误消息 SQL Server 2008 R2 SP1 缺少缓存的 MSI 文件 C:\Windows\Installer\FileName.msi 。 其原始文件是 C:\Windows\Installer\sql_FeatureName.msi ,它已安装用于产品 Microsoft SQL ServerVersion,版本 C:\originalfolderVersionNumber,语言 Language。 缺少缓存的修补程序文件 c:\Windows\Installer\FileName.msp 。 其原始文件是 sql_engine_core_inst.msp,可从 版本VersionNumber安装Hotfix 2316 for SQL Server 2012 (KB2679368) (64-bit)。 缺少缓存的修补程序文件 C:\Windows\Installer\FileName.msp 。 其原始文件是 C:\Windows\Installer\sql_FeatureName.msp,可从修补程序安装SQL Server 2012 KB 编号版本 VersionNumber。

注意

在 2012 SQL Server 的某些条件下,RTM 媒体可能无法正确注册。 在这些情况下卸载累积更新或服务包时,安装程序可能会提示你输入 RTM 媒体。 若要解决此问题,请在修补程序删除过程中提供 RTM 媒体路径。

参考

Installer 数据库

修补程序包

GitHub 存储库



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有